#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

void main(int argc ,char *argv[])
{
    if(argc!=2)
    {
        printf("invalid number\n");
        return;
    }
    int sock=socket(AF_INET,SOCK_DGRAM,0);
    if(sock<0)
    {
        perror("sock");
        return;
    }
    // struct sockaddr
    struct sockaddr_in addr;
    addr.sin_family=AF_INET;
    addr.sin_port=htons(8080);
    addr.sin_addr.s_addr=inet_addr(argv[1]);
    // while(1)
    // {
    //     char temp[100]={0};
    //     scanf("%[^\n]",temp);
    //     while(getchar()!='\n');
    //     if(sendto(sock,temp,100,0,(struct sockaddr*)&addr,sizeof(addr))<0)
    //     {
    //         perror("send to");
    //     }
    // }
    if(bind(sock,(struct sockaddr*)&addr,sizeof(addr))!=0)
    {
        perror("bind");
    }
    while(1)
    {
        struct sockaddr_in clinetaddr;
        socklen_t len;
        char temp[100]={0};
        if(recvfrom(sock,temp,100,0,(struct sockaddr*)&clinetaddr,&len)<=0)
        {
            perror("receive from clinet");
        }
        printf("ip:%s port:%d \n",inet_ntoa(clinetaddr.sin_addr),ntohs(clinetaddr.sin_port));
        printf("receivr:%s\n",temp);
    }

    close(sock);
    
}